#pragma once

#include "Terrain.h"

namespace game
{
	enum IEntityMoveState
	{
		S_I_ENTITY_MOVE_STATE_MOVING,
		S_I_ENTITY_MOVE_STATE_IDLE,
	};

	class IEntityMovement
	{
		virtual void					set_terrain_manager(game::TerrainManager * tm) = 0;
		virtual game::TerrainManager *	get_terrain_manager() = 0;

		virtual void	set_speed(float speed) = 0;
		virtual float	get_speed() = 0;

		virtual void				set_move_state(IEntityMoveState state) = 0;
		virtual IEntityMoveState	get_move_state() = 0;

		virtual sf::Vector2u get_current_grid_position() = 0;
		virtual sf::Vector2u get_last_future_pos() = 0;

		virtual void MoveToPoint(sf::Vector2u goal) = 0;
		virtual void MoveToNextCell(std::string key) = 0;
	};
}